The desktop computer has become the primary tool for knowledge workers in many professions, providing application programs for data management and analysis, scheduling, communications, word processing, accounting, and technical drawing, to name just a few. Multi-tasking knowledge workers often find themselves frequently switching between different tasks on the same computer. Due to the different sets of documents and other resources associated with distinct tasks, considerable time is consumed by task switching.
Although many attempts have been made to assist computer users with their computing activities, the existing approaches typically suffer from one or more disadvantages. For example, some approaches require time-consuming user interaction every time the user switches tasks. At the opposite extreme are techniques that require no user interaction but provide assistance that is of limited relevance. An example of systems that provide assistance of limited relevance is the class of systems that automatically cluster user data in an unsupervised manner—leading to organizations that are logical, but not compatible with the way that the user thinks about their information. Another disadvantage of many approaches is that they are limited to the adaptation of a single application program and do not provide multi-application integration. Another disadvantage of many approaches is that they do not take into consideration the user's past activity, e.g., desktop search systems that index all files on a user's desktop, even the ones that the user has never accessed before. Clearly, it would be desirable to provide sophisticated and relevant assistance to users in a computing environment to facilitate switching between multiple tasks involving multiple applications.